Load balancing of resources is critical to the success of a grid environment, as well as other environments such as traffic over a network. Load balancing may take into account different considerations such as, for example, computer processing speed of a single computer or over an entire grid, available memory, I/O bound processes, the tasks that are running on the grid, etc. Usually the aim of load-balancing is to move the running tasks across the computer processing units in order to insure that no processor is idle or overworked during run time. Said otherwise, load balancing seeks to optimally balance the load over an entire grid. In theory, load balancing should minimize the total running time by a set of tasks.
Load balancing may be accomplished by several different methods. For example, to combat overload, a predefined threshold may simply be defined per application. In this type of approach, a load test is performed in a test-lab using a number of parallel sessions, maximal number of waiting events in the queue or more generic resources like CPU or memory use. New incoming loads will simply be rejected when they exceed the threshold.
Another methodology is to add a load balancer to tailor the incoming load between a given set of processors. This methodology avoids the rejection of new incoming loads, but it does not typically solve overload conditions for a single processor.
Another methodology is to use a grid scheduler. The grid scheduler can be used to determine the amount of workload to schedule across a cluster of computers. However, improper scheduling results in poor performance of the grid, itself.
Schedulers commonly use classical methods for distributing work load across the grid. Best-fit algorithms and the like, for example, are often used when a job size can be predicted. In an example of a best-fit scheduler, the scheduler attempts to find the best time slot to load/place a particular known job. In this approach, the jobs try to make reservations on the grid based on priority.
In another example, supercluster job reservation systems use a full reservation system where jobs are submitted to a central queue. The reservation system locates resources from one or more clusters and reserves the exact resources required by the job. Job prediction is important in this model and thus requires profiling information on the job itself. This profiling may include, for example, resources needed, possibly expected run time, or I/O needed for a particular job.
Other grid based systems use more basic scheduling policies, like round robin approaches. In such approaches, the jobs are disbursed without account of the load on the systems in the grid. In the round robin approach, the grid components may have more available resources than the job is using and thus resources are not utilized to their maximum efficiency.
In any of the above scenarios, difficulties may arise from the practicalities of a load distribution mechanism as well as restrictions imposed by real time constraints of the grid. Thus, to maintain the process mix of a grid requires an instantaneous and free redistribution of all processes in the system.
Accordingly, there exists a need in the art to overcome the deficiencies and limitations described hereinabove.